layui.define(['index', 'form', 'table', 'laydate'], function () {
	let $ = layui.$,
		form = layui.form,
		laydate = layui.laydate,
		table = layui.table

	laydate.render({
		elem: '#gmtDate',
		value: new Date(new Date().getTime()),
		max: new Date().getTime(),
		isInitValue: true,
	})

	/*
	 * 时间戳格式转正常时间格式显示
	 */

	/**格式化日期，如月、日、时、分、秒保证为2位数
	 * @param {Object} n
	 */
	function formatNumber(n) {
		n = n.toString()
		return n[1] ? n : '0' + n
	}

	/**参数number为毫秒时间戳，format为需要转换成的日期格式
	 * @param {Object} number
	 * @param {Object} format
	 * 使用formatTime(1545903266795, 'Y年M月D日 h:m:s')或者formatTime(1545903266795, 'Y-M-D h:m:s')即可
	 */
	function formatTime(number, format) {
		let time = new Date(number)
		let newArr = []
		let formatArr = ['Y', 'M', 'D', 'h', 'm', 's']
		newArr.push(time.getFullYear())
		newArr.push(formatNumber(time.getMonth() + 1))
		newArr.push(formatNumber(time.getDate()))

		newArr.push(formatNumber(time.getHours()))
		newArr.push(formatNumber(time.getMinutes()))
		newArr.push(formatNumber(time.getSeconds()))

		for (let i in newArr) {
			format = format.replace(formatArr[i], newArr[i])
		}
		return format
	}

	function getThousandNumber(num) {
		return num.toString().replace(/\d+/, function (n) {
			// 先提取整数部分
			return n.replace(/(\d)(?=(\d{3})+$)/g, function ($1) {
				// 对整数部分添加分隔符
				return $1 + ','
			})
		})
	}

	/**
	 * 亿单位
	 * @param number
	 * @returns {string}
	 */
	function formatBillionMoney(number) {
		// debugger
		// if (number >= 1E4 && number < 1E8) {
		//     str_num = number / 1E4
		//     return str_num.toFixed(2)
		// } else if (number >= 1E8) {
		//     str_num = number / 1E8
		//     return str_num.toFixed(2)
		// } else { //一千以下
		//     return number
		// }
		return (number / 1e8).toFixed(4)
	}

	function _tranNumber(num, point) {
		let numStr = num.toString().split('.')[0]
		if (numStr.length < 6) {
			return numStr
		} else if (numStr.length >= 6 && numStr.length <= 8) {
			let decimal = numStr.substring(
				numStr.length - 4,
				numStr.length - 4 + point
			)
			return parseFloat(parseInt(num / 10000) + '.' + decimal) + '万'
		} else if (numStr.length > 8) {
			let decimal = numStr.substring(
				numStr.length - 8,
				numStr.length - 8 + point
			)
			return parseFloat(parseInt(num / 100000000) + '.' + decimal) + '亿'
		}
	}

	function simplifyNum(number) {
		if (!number && number !== 0) return number
		var symbol = ''
		if (number < 0) symbol = '-'
		number = Math.abs(number)
		var str_num
		if (number >= 1e4 && number < 1e8) {
			str_num = number / 1e4
			return symbol + str_num.toFixed(2) + '万'
		} else if (number >= 1e8) {
			str_num = number / 1e8
			return symbol + str_num.toFixed(2) + '亿'
		} else {
			//一千以下
			return number
		}
	}

	function changeColor(text) {
		return text.toString().startsWith('-')
			? "<span style='color: #0aab62'>" + text + '</span>'
			: "<span style='color: #f33333'>" + text + '</span>'
	}

	//数据表格
	// let loading = layer.msg("数据请求中...");
	table.render({
		elem: '#LAY-manage',
		url: 'http://localhost:5000/kpl/rlhb/list',
		loading: true,
		autoSort: false,
		cols: [
			[
				// {type: "checkbox"},
				{ title: '股票代码', field: 'code', width: 100 },
				{ title: '股票名称', field: 'name', width: 100 },
				{ title: '板块', field: 'plate', minWidth: 200 },
				{ title: '价格(元)', field: 'price', width: 100, sort: true },
				{
					title: '涨幅(%)',
					field: 'zhangfu',
					width: 100,
					sort: true,
					templet: function (d) {
						return changeColor(d.zhangfu)
					},
				},
				{
					title: '成交额',
					field: 'chengjiaoe',
					width: 130,
					sort: true,
					templet: function (d) {
						return simplifyNum(d.chengjiaoe)
					},
				},
				{
					title: '实际换手(%)',
					field: 'shijihuanshou',
					width: 130,
					sort: true,
				},
				{
					title: '涨速(%)',
					field: 'zhangsu',
					width: 130,
					sort: true,
					templet: function (d) {
						return changeColor(d.zhangsu)
					},
				},
				{
					title: '实际流通',
					field: 'shijiliutong',
					width: 130,
					sort: true,
					templet: function (d) {
						return simplifyNum(d.shijiliutong)
					},
				},
				{
					title: '主力买',
					field: 'zhuliBuy',
					width: 130,
					sort: true,
					templet: function (d) {
						return changeColor(simplifyNum(d.zhuliBuy))
					},
				},
				{
					title: '主力卖',
					field: 'zhuliSell',
					width: 130,
					sort: true,
					templet: function (d) {
						return changeColor(simplifyNum(d.zhuliSell))
					},
				},
				{
					title: '主力净额',
					field: 'zhulijinge',
					width: 130,
					sort: true,
					templet: function (d) {
						return changeColor(simplifyNum(d.zhulijinge))
					},
				},
				{
					title: '卖流占比(%)',
					field: 'mailiuzhanbi',
					width: 130,
					sort: true,
				},
				{
					title: '净流占比(%)',
					field: 'jingliuzhanbi',
					width: 130,
					sort: true,
					templet: function (d) {
						return changeColor(d.jingliuzhanbi)
					},
				},
				{
					title: '区间涨幅(%)',
					field: 'qujianzhangfu',
					width: 130,
					sort: true,
					templet: function (d) {
						return changeColor(d.qujianzhangfu)
					},
				},
				{
					title: '量比',
					field: 'liangbi',
					width: 130,
					sort: true,
					templet: function (d) {
						return changeColor(d.liangbi)
					},
				},
				{
					title: '总市值(亿)',
					field: 'zongshizhi',
					width: 130,
					sort: true,
					templet: function (d) {
						return formatBillionMoney(d.zongshizhi)
					},
				},
				{
					title: '流通市值(亿)',
					field: 'liutongshizhi',
					width: 130,
					sort: true,
					templet: function (d) {
						return formatBillionMoney(d.liutongshizhi)
					},
				},
				{ title: '交易日', field: 'date', width: 130 },
			],
		],
		limits: [10, 15, 20, 25],
		limit: 15,
		page: true,
		done: function () {
			// layer.close(loading);
		},
	})
	//监听搜索
	form.on('submit(LAY-front-search)', function (data) {
		var field = data.field
		//执行重载
		table.reload('LAY-manage', {
			where: field,
			page: 1,
		})
	})

	table.on('sort(LAY-manage)', function (obj) {
		//注：tool是工具条事件名，test是table原始容器的属性 lay-filter="对应的值"
		console.log(obj.field) //当前排序的字段名
		console.log(obj.type) //当前排序类型：desc（降序）、asc（升序）、null（空对象，默认排序）
		console.log(this) //当前排序的 th 对象

		//尽管我们的 table 自带排序功能，但并没有请求服务端。
		//有些时候，你可能需要根据当前排序的字段，重新向服务端发送请求，从而实现服务端排序，如：
		table.reload('LAY-manage', {
			initSort: obj, //记录初始排序，如果不设的话，将无法标记表头的排序状态。 layui 2.1.1 新增参数
			where: {
				//请求参数（注意：这里面的参数可任意定义，并非下面固定的格式）
				orderField: obj.field, //排序字段   在接口作为参数字段  field order
				orderType: obj.type, //排序方式   在接口作为参数字段  field order
			},
		})
	})
	// 导出模块
	exports('rlhb', {
		init: function () {
			console.log('rlhb 模块初始化')
		},
	})
});